Neidio i'r cynnwys

Cod peiriant

Oddi ar Wicipedia
Cod peiriant
Enghraifft o'r canlynolformal language Edit this on Wikidata
Mathiaith raglennu Edit this on Wikidata
Monitro iaith peiriant mewn cyfrifiadur W65C816S un-bwrdd, gan arddangos cod dadgynull, yn ogystal â chofrestru prosesydd a chof.

Mae cod peiriant yn rhaglen gyfrifiadurol y gellir ei gweithredu'n uniongyrchol gan uned brosesu ganolog y cyfrifiadur (h.y. y CPU). Mae pob cyfarwyddyd yn achosi i'r CPU i gyflawni tasg benodol iawn, fel llwytho rhaglen, ei gadw, canghenu neu weithrediad ALU ar un neu ragor o unedau o ddata yng nghofrestrau CPU neu ei gof.

Mae cod peiriant yn iaith a sgwennwyd mewn rhifau ac a fwriedir ei rhedeg mor gyflym â phosibl, a gellir ei hystyried yn gynrychiolaeth lefel isaf o raglen gyfrifiadurol ac sy'n ddibynnol ar galedwedd. Er ei bod hi'n bosibl ysgrifennu rhaglenni'n uniongyrchol mewn cod peiriant, mae'n ddiflas a gall gwallau gael eu gosod o fewn y cod. Oherwydd hyn, anaml iawn y gwneir hyn; ymhlith yr eithriadau mae: dad-fygio lefel isel, patsio a chynnull-dadgynull, (assembly language disassembly).

Erbyn 2019 roedd y mwyafrif llethol o raglenni wedi'u hysgrifennu mewn ieithoedd lefel uwch neu iaith gydosod (assembly language). Yna 'cyfieithir' y cod ffynhonnell i god peiriant a ellir ei weithredu, gan teclynnau megis compilers, cydosodwyr (assemblers), a chysylltwyr, gydag un eithriad bwysig: rhaglenni nad ydynt yn cael eu cyfieithu i god peiriant.

Enghraifft[golygu | golygu cod]

Gan na cheir (hyd y gwyddys) god a sgwennwyd yn Gymreag, bydd y canlynol yn cynnwys cod Saesneg. Nid ymddengys rhai o'r termau chwaith mewn unrhyw eiriadur, gan gynnwys Geiriadur Bangor.

Mae pensaerniaeth MIPS yn darparu enghraifft o god peiriant, sydd a'i gyfarwyddyd wastad yn 32 bit. Nodir y math cyffredinol o'r cyfarwyddyd gan op (o'r gair operation), y 6-bit uchaf. Nodir math-J (jump) a math-I (neu yn Saesneg: I-type; immediate) o'r cyfarwyddyd fel op. Mae cyfarwyddyd math-R (register) yn cynnwys maes ychwanegol, sef funct, er mwyn adnabod yr union gweithrediad (operation). Maesydd a ddefnyddir yn y mathau hyn yw:

   6      5     5     5     5      6 bits
[  op  |  rs |  rt |  rd |shamt| funct]  R-type
[  op  |  rs |  rt | address/immediate]  I-type
[  op  |        target address        ]  J-type

mae rs, rt, ac rd yn dynodi register operands; mae shamt yn rhoi shift amount; address neu'r maes immediate yn cynnwys operand uniongyrchol.

Er enghraifft, mae ychwanegu cofrestr 1 a 2 ac yn gosod y canlyniadau yn nghofrestr 6, a amgodwyd fel:

[  op  |  rs |  rt |  rd |shamt| funct]
    0     1     2     6     0     32     degol
 000000 00001 00010 00110 00000 100000   deuaidd

Llwytha gwerth i gofrestr 8, gymrwyd o gofgell 68, wedi'r lleoliad a rhestrwyd yng nghofrestr 3:

[  op  |  rs |  rt | address/immediate]
   35     3     8           68           degol
 100011 00011 01000 00000 00001 000100   deuaidd

I newidio i gyfeiriad 1024:

[  op  |        target address        ]
    2                 1024               degol
 000010 00000 00000 00000 10000 000000   deuaidd

Cyfeiriadau[golygu | golygu cod]